home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue28 / tiptrix / LISTING4.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-11-11  |  1.8 KB  |  53 lines

  1. function GetFileInDir(date: TDateTime; path, fileMask: string): string;
  2. { to find newest file: pass Now as date
  3.   to find oldest file: pass 0 as date
  4.   to find newest file on 19 Sep 97: pass 20 Sep 97 as date }
  5. var
  6.   slstFiles: TStringList;
  7.   dateTime, savedDateTime: TDateTime;
  8.   index: integer;
  9.   i: integer;
  10.   fileDate: longInt;
  11. begin
  12.   slstFiles := TStringList.Create;
  13.   try
  14.     (* issue #17, page 62
  15.     procedure FindFile(initialPath : string;  
  16.       fileMask : string;     { mask to look for        }           }
  17.       recursive: boolean;    { search subdirectories?  }
  18.       stopOnFirstMatch: boolean; 
  19.       showFile: boolean;     { add file or dir to list }        }
  20.       files: TStringList);   { addmatch(es) to list    }
  21.     *)
  22.     FindFile(path, fileMask, False, False, True, slstFiles);
  23.     if slstFiles.Count > 0 then begin
  24.       dateTime := 0;
  25.       savedDateTime := 0;
  26.       if date = 0 then begin { find oldest file }
  27.         savedDateTime := now;
  28.         for i := 0 to slstFiles.Count - 1 do begin
  29.           fileDate := FileAge(slstFiles.Strings[i]);
  30.           dateTime := FileDateToDateTime(fileDate);
  31.           if dateTime < savedDateTime then begin
  32.             savedDateTime := dateTime;
  33.             index := i;
  34.           end;
  35.         end;
  36.       end
  37.       else { find file nearest (<= date) }
  38.         for i := 0 to slstFiles.Count - 1 do begin
  39.           fileDate := FileAge(slstFiles.Strings[i]);
  40.           dateTime := FileDateToDateTime(fileDate);
  41.           if ((dateTime > savedDateTime) and (dateTime < date)) then begin
  42.             savedDateTime := dateTime;
  43.             index := i;
  44.           end;
  45.         end;
  46.         Result := ExtractFileName(slstFiles.Strings[index]);
  47.       end;
  48.     else Result := '';
  49.   finally
  50.     slstFiles.Free;
  51.   end;
  52. end;
  53.